package com.enjoyor.soa.traffic.api.ubms.service.dubbo;

import com.enjoyor.soa.traffic.api.ubms.dto.TideSiteInfoDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * 维护潮汐控制器点位信息的Dubbo服务
 * @author yuankun
 * @version V1.0
 */
@SuppressWarnings("rawtypes")
public interface DubboTideSiteInfoService {
	/**
	 * 返回所有潮汐控制器点位信息
	 * @return ResultPojo 所有潮汐控制器点位信息
	 */
	public ResultPojo getTideSiteInfo();
	
	/**
	 * 分页返回所有潮汐控制器点位信息
	 * @param page 分页对象
	 * @return ResultPojo 包含潮汐控制器点位信息的分页对象
	 */
	public ResultPojo getPageTideSiteInfo(Page page);
	/**
	 * 返回所有潮汐控制器点位信息
	 * @param deviceStatusCode 
	 * @param orderSeq 
	 * @param commParam 
	 * @param commMode 
	 * @param region 
	 * @param model 
	 * @param tsName 
	 * @param tsId 
	 * @return ResultPojo 所有潮汐控制器点位信息
	 */
	public ResultPojo getTideSiteInfo(String tsId, String tsName, String model, String region, String commMode, String commParam, String orderSeq, String deviceStatusCode);
	
	/**
	 * 分页返回所有潮汐控制器点位信息
	 * @param page 分页对象
	 * @param deviceStatusCode 
	 * @param orderSeq 
	 * @param commParam 
	 * @param commMode 
	 * @param regionId 
	 * @param model 
	 * @param tsName 
	 * @param tsId 
	 * @return ResultPojo 包含潮汐控制器点位信息的分页对象
	 */
	public ResultPojo getPageTideSiteInfo(Page page, String tsId, String tsName, String model, String regionId, String commMode, String commParam, String orderSeq, String deviceStatusCode);
	
	/**
	 * 返回指定编码的潮汐控制器点位信息
	 * @param tsId 潮汐控制器点位编码
	 * @return ResultPojo 潮汐控制器点位信息
	 */
	public ResultPojo getTideSiteInfoById(String tsId);
	
	/**
	 * 按名称匹配并返回潮汐控制器点位信息
	 * @param tsName 潮汐控制器点位名称
	 * @return ResultPojo 潮汐控制器点位信息
	 */
	public ResultPojo getTideSiteInfoByName(String tsName);
	
	/**
	 * 返回与前缀相匹配的潮汐控制器点位最大编码值，用于手工生成新的编码
	 * @param prefixTsId 潮汐控制器点位编码前缀
	 * @return String 与前缀相匹配的潮汐控制器点位最大编码值
	 */
	public String getMaxTsId(String prefixTsId);
	
	/**
	 * 添加一条潮汐控制器点位信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param tideSiteInfoDto 潮汐控制器点位信息
	 * @return ResultPojo 添加结果
	 */
	public ResultPojo addTideSiteInfo(String token, TideSiteInfoDto tideSiteInfoDto);
	
	/**
	 * 修改一条潮汐控制器点位信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param tideSiteInfoDto 潮汐控制器点位信息
	 * @return ResultPojo 修改结果
	 */
	public ResultPojo editTideSiteInfo(String token, TideSiteInfoDto tideSiteInfoDto);
	
	/**
	 * 删除指定编码的潮汐控制器点位信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param tsId 潮汐控制器点位编码
	 * @return ResultPojo 删除结果
	 */
	public ResultPojo removeTideSiteInfo(String token, String tsId);

	public ResultPojo getPageEasyUiTideSiteInfo(Page page, String tsId, String tsName, String model, String regionId,
			String orderSeq, String deviceStatusCode);

}
